Français Virtuose
  • Tags:

    Action d'arme
  • Name:

    aEmotionalStrike

  • Displayed name:

    Frappe émotionnelle

  • Description:

    Vous frappez avec votre arme en y mettant tout ce que vous éprouvez. L'attaque garde les PA, le dé et le type de dégâts de votre arme, mais pas son test : celui-ci porte sur la caractéristique de test de votre posture — **Vigueur** en Rage, **Réflexe** en Euphorie, **Résilience** en Sérénité, **Arcane** en Mélancolie. En plus des dégâts, la cible encaisse un malus dicté par votre posture : - **Rage** : sa régénération de PA baisse pendant 10 secondes. - **Euphorie** : elle perd du Flux, en dés de 10 multipliés par 10. - **Sérénité** : sa vitesse de déplacement baisse pendant 10 secondes. - **Mélancolie** : son temps de réaction augmente. L'ampleur du malus se choisit au lancement. Vous pouvez en outre dépenser des Points de l'émotion que vous tenez : chaque Point retire **1 de plus** à la caractéristique que votre posture affaiblit, pendant 10 secondes. *Il faut être en posture émotionnelle pour utiliser cette action.*

  • Cast description:

    | PA: vAP.string | TdR: vCD.strings | | :---: | :---: | | **Flux: vFluxOrCost.string ➞ vFluxCost.string** | **Portée: vRange.string** | @if vPosture.value == 0 then [[***Vous devez être en posture émotionnelle pour utiliser cette action.***]] end @if vPosture.value > 0 then [[Sur un test de **vTest.string** réussi, **RM vMR.string** [1d20] : Inflige 1vDamageDice.string [1vDamageDice.string] dégâts vDamageType.string]] end @if vPosture.value > 0 then [[ à la cible, qui subit en plus la marque de votre **{({[[Rage]],[[Euphorie]],[[Sérénité]],[[Mélancolie]]})[vPosture.value]}** :]] end @if vPosture.value == 1 then [[ - **sa régénération de PA est réduite de {vMalus.value*0.1} PA/s** pendant 10 secondes.]] end @if vPosture.value == 2 then [[ - **elle perd vMalus.stringd10 [vMalus.stringd10] × 10 Flux**.]] end @if vPosture.value == 3 then [[ - **sa vitesse de déplacement est réduite de {vMalus.value*0.5} m/s** pendant 10 secondes.]] end @if vPosture.value == 4 then [[ - **son temps de réaction augmente de vMalus.string seconde(s)**.]] end @if vPoints.value > 0 then [[ - **sa {({[[Résilience]],[[Arcane]],[[Réflexe]],[[Vigueur]]})[vPosture.value]} est réduite de vPoints.string de plus** pendant 10 secondes, pour les Point(s) d'émotion dépensé(s).]] end @if vPosture.value > 0 then [[ *La créature affectée peut réagir avec son Esquive pour annuler les effets de cette action.*]] end

  • Condition:

    assert(vPosture.value > 0, [[Vous n'êtes pas en posture émotionnelle.]])
    assert(character.sFlux.current >= vFluxCost.value, [[Vous n'avez pas assez de Flux.]])
    assert(vPosture.value ~= 1 or vPoints.value <= character.sRagePoints.current, [[Vous n'avez pas assez de Points de Rage.]])
    assert(vPosture.value ~= 2 or vPoints.value <= character.sEuphoriaPoints.current, [[Vous n'avez pas assez de Points d'Euphorie.]])
    assert(vPosture.value ~= 3 or vPoints.value <= character.sSerenityPoints.current, [[Vous n'avez pas assez de Points de Sérénité.]])
    assert(vPosture.value ~= 4 or vPoints.value <= character.sMelancholyPoints.current, [[Vous n'avez pas assez de Points de Mélancolie.]])
  • AP cost:

    vWeaponAP

  • Cooldown:

    5

  • Flux cost:

    apMod(vAP)*cdMod(vCD)*targetMod(1,0)*vRange*reacSave*cancelOnSave*(puncMod(0,1)*effect(vWeaponAP*22,60)+durMod(10)*effect(vPoints*45,22.5)+number(vPosture==1)*durMod(10)*effect(vMalus*75,37.5)+number(vPosture==2)*puncMod(0,1)*effect(vMalus*55,100)+number(vPosture==3)*durMod(10)*effect(vMalus*0.5*75,32.5)+number(vPosture==4)*puncMod(0,1)*effect(vMalus*37.5,50))
  • Variables:

    postureLabels = {[[Rage]], [[Euphorie]], [[Sérénité]], [[Mélancolie]]}
    
    postureIndex = 0
    if character:has([[mEmotionalPosture]]) then
        for i, label in pairs(postureLabels) do
            if string.find(character.mEmotionalPosture.displayName.value, label, 1, true) then
                postureIndex = i
            end
        end
    end
    vPosture = StatVariable([[vPosture]], postureIndex)
    
    testStats = {[[character.sVigor]], [[character.sReflex]], [[character.sResilience]], [[character.sArcana]]}
    testLabels = {[[Vigueur]], [[Réflexe]], [[Résilience]], [[Arcane]]}
    testIndex = postureIndex
    if testIndex == 0 then
        testIndex = 1
    end
    vTest = ListVariable([[vTest]], [[Test]], {testStats[testIndex]}, {testLabels[testIndex]})
    vMR = StatVariable([[vMR]], [[vTest]])
    
    vMalus = NumberVariable([[vMalus]], [[Malus]], [[1]], [[10]], [[1]])
    
    pointStats = {[[sRagePoints]], [[sEuphoriaPoints]], [[sSerenityPoints]], [[sMelancholyPoints]]}
    if postureIndex > 0 and character:has(pointStats[postureIndex]) then
        vPoints = NumberVariable([[vPoints]], [[Points d'émotion]], [[0]], [[character.]] .. pointStats[postureIndex], [[1]])
    else
        vPoints = StatVariable([[vPoints]], 0)
    end
    
  • On used script:

    character.sFlux:changeCurrent(-vFluxCost.value)
    
    if (vPosture.value == 1) then
        character.sRagePoints:changeCurrent(-vPoints.value)
    elseif (vPosture.value == 2) then
        character.sEuphoriaPoints:changeCurrent(-vPoints.value)
    elseif (vPosture.value == 3) then
        character.sSerenityPoints:changeCurrent(-vPoints.value)
    elseif (vPosture.value == 4) then
        character.sMelancholyPoints:changeCurrent(-vPoints.value)
    end
    
  • On post script:

    if (success) then
        action.currentCD.value = vCD.value
    end
    
  • Type:

    1

  • Action effects:

    • Use case:

      3*number(vPosture.value==1)

    • Name:

      Frappe émotionnelle (Rage)

    • Description:

    • Script:

      effect = character:createEffect([[mEmotionalStrikeRage]])
      effect.displayName:set([[Frappe émotionnelle : Rage]])
      effect.description:set([[Votre régénération de PA est réduite de {{vMalus.value*0.1}} PA/s.]])
      effect.duration:set(10)
      effect.script:set([=[character.sRegenAP:addCurrent([[{{-vMalus.value*0.1}}]], [[psychic]], modifier.displayName.value)]=])
      effect:activate()
      
    • Variables:

    • Use case:

      3*number(vPosture.value==3)

    • Name:

      Frappe émotionnelle (Sérénité)

    • Description:

    • Script:

      effect = character:createEffect([[mEmotionalStrikeSerenity]])
      effect.displayName:set([[Frappe émotionnelle : Sérénité]])
      effect.description:set([[Votre vitesse de déplacement est réduite de {{vMalus.value*0.5}} m/s.]])
      effect.duration:set(10)
      effect.script:set([=[character.sMovement:addCurrent({{-vMalus.value*0.5}}, [[psychic]], modifier.displayName.value)]=])
      effect:activate()
      
    • Variables:

    • Use case:

      3*number(vPosture.value==4)

    • Name:

      Frappe émotionnelle (Mélancolie)

    • Description:

    • Script:

      character:setReaction(character.currentReaction + {{vMalus.value}})
      
    • Variables:

    • Use case:

      3*number(vPoints.value>0)

    • Name:

      Frappe émotionnelle (Points d'émotion)

    • Description:

    • Script:

      effect = character:createEffect([[mEmotionalStrikePoints]])
      effect.displayName:set([[Frappe émotionnelle : Points d'émotion]])
      effect.description:set([[Votre {{({[[Résilience]],[[Arcane]],[[Réflexe]],[[Vigueur]]})[vPosture.value]}} est réduite de {{vPoints.value}}.]])
      effect.duration:set(10)
      effect.script:set([=[character.{{({[[sResilience]],[[sArcana]],[[sReflex]],[[sVigor]]})[vPosture.value]}}:addCurrent({{-vPoints.value}}, [[psychic]], modifier.displayName.value)]=])
      effect:activate()
      
    • Variables: